/**
 * Created whit IntelliJ IDEA.
 * Description：
 * User：ZHONGCHEN
 * Date:2022-03-19
 * Time:10:49
 */

/**
 * 606. 根据二叉树创建字符串
 * 你需要采用前序遍历的方式，将一个二叉树转换成一个由括号和整数组成的字符串。
 * 空节点则用一对空括号 "()" 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/construct-string-from-binary-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode() {
    }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

public class TestDemo {
    StringBuilder str = new StringBuilder();

    public String tree2str(TreeNode root) {
        if (root == null) {
            return null;
        }
        tree2strChild(root);
        return str.substring(1,str.length()-1);
    }

    private void tree2strChild(TreeNode root) {
        str.append("(");
        str.append(root.val);
        if (root.left != null) {
            tree2strChild(root.left);
        } else if (root.right != null) {
            str.append("()");
        }
        if (root.right != null){
            tree2strChild(root.right);
        }
        str.append(")");
    }
}
